import 'package:flutter/material.dart';
import 'package:netease_music/pages/home/discover/recommend/index.dart';

class DisCover extends StatefulWidget {
  const DisCover({super.key});

  @override
  State<DisCover> createState() => _DisCoverState();
}

class _DisCoverState extends State<DisCover>
    with SingleTickerProviderStateMixin {
  late TabController _tabController;

  @override
  void initState() {
    super.initState();
    // 创建 TabController，指定标签数量和 vsync
    _tabController = TabController(
      length: 4, // 标签数量
      vsync: this, // 动画同步
      initialIndex: 0, // 初始选中的标签索引
    );
  }

  @override
  void dispose() {
    // 销毁控制器释放资源
    _tabController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      child: Column(
        children: [
          // tabs模块
          _buildTabs(),
          // 4个模块
          Expanded(
            child: TabBarView(
              controller: _tabController,
              children: const [
                Recommend(),
                SizedBox(
                  child: Text('歌单'),
                ),
                SizedBox(
                  child: Text('主播电台'),
                ),
                SizedBox(
                  child: Text('排行榜'),
                )
              ],
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildTabs() {
    return TabBar(
      // 选中文字样式
      labelStyle: TextStyle(
        color: Theme.of(context).primaryColor,
        fontSize: 12,
      ),
      // 未选中文字样式
      unselectedLabelStyle: Theme.of(context).textTheme.bodyMedium,
      // 设置下划线的宽度为整个tab项
      indicatorSize: TabBarIndicatorSize.tab,
      // 重新定义下划线
      indicator: UnderlineTabIndicator(
        borderSide: BorderSide(
          width: 2,
          color: Theme.of(context).primaryColor,
        ),
      ),
      // 设置底部边框线
      dividerColor: Colors.transparent,
      // 绑定tabs控制器
      controller: _tabController,
      tabs: const [
        Tab(text: "个性推荐"),
        Tab(text: "歌单"),
        Tab(text: "主播电台"),
        Tab(text: "排行榜"),
      ],
    );
  }
}
